/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BackEnd;

import BackEnd.Exceptions.CreateRegisterException;
import BackEnd.Exceptions.NotExistRegisterException;
import BackEnd.Exceptions.UpdateRegisterException;
import java.util.Date;
import Dao.*;
import java.sql.Time;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author emmanuel
 */
public class Sesion {
    private int id;
    private Usuario usuario;
    private Date fechaInicio;
    private Time HoraInicio;
    private Date fechaFin;
    private Time HoraFin;
    private String modoSalida;

    public Sesion() {
    }

    public Sesion(Date fechaInicio, Date fechaFin, String modoSalida) {
        this.fechaInicio = fechaInicio;
        this.fechaFin = fechaFin;
        this.modoSalida = modoSalida;
    }

    /**
     * @return the fechaInicio
     */
    public Date getFechaInicio() {
        return fechaInicio;
    }

    /**
     * @param fechaInicio the fechaInicio to set
     */
    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    /**
     * @return the fechaFin
     */
    public Date getFechaFin() {
        return fechaFin;
    }

    /**
     * @param fechaFin the fechaFin to set
     */
    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    /**
     * @return the modoSalida
     */
    public String getModoSalida() {
        return modoSalida;
    }

    /**
     * @param modoSalida the modoSalida to set
     */
    public void setModoSalida(String modoSalida) {
        this.modoSalida = modoSalida;
    }

    public boolean abrir(int id)
    {
        try {
            SesionValueObject svo = (SesionValueObject) new SesionDao().traer(new PkId(id));

            this.setId(svo.getId());
            this.setFechaFin(svo.getFechaFin());
            this.setHoraFin(svo.getHoraFin());
            this.setFechaInicio(svo.getFechaInicio());
            this.setHoraInicio(svo.getHoraInicio());
            this.setModoSalida(svo.getModoSalida());
            Usuario us=new Usuario();
            us.abrir(svo.getIdUsuario());
            this.usuario=us;

        } catch (NotExistRegisterException ex) {
            Logger.getLogger(Sesion.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
        return true;
    }

    public void grabar()
    {
        SesionValueObject svo=new SesionValueObject();

        svo.setId(id);
        svo.setIdUsuario((int) usuario.getId());
        svo.setFechaFin(fechaFin);
        svo.setFechaInicio(fechaInicio);
        svo.setHoraFin(HoraFin);
        svo.setHoraInicio(HoraInicio);
        svo.setModoSalida(modoSalida);

        try {
                    new SesionDao().create(svo);
        } catch (CreateRegisterException ex){
            try {
                new SesionDao().update(svo);
            } catch (UpdateRegisterException ex1) {
                Logger.getLogger(Sesion.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }
    }

    /**
     * @return the HoraInicio
     */
    public Time getHoraInicio() {
        return HoraInicio;
    }

    /**
     * @param HoraInicio the HoraInicio to set
     */
    public void setHoraInicio(Time HoraInicio) {
        this.HoraInicio = HoraInicio;
    }

    /**
     * @return the HoraFin
     */
    public Time getHoraFin() {
        return HoraFin;
    }

    /**
     * @param HoraFin the HoraFin to set
     */
    public void setHoraFin(Time HoraFin) {
        this.HoraFin = HoraFin;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the usuario
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    
}
